package org.wzy.design.patterns.proxy.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/** 
 * ClassName: Meipo <br/> 
 * Function: TODO ADD FUNCTION. <br/> 
 * Reason: 媒婆，实现InvocationHandler接口下的invoke方法. <br/> 
 * date: 2017年6月14日 下午11:26:52 <br/> 
 * 
 * @author wzy_h 
 * @version  
 * @since JDK 1.8
 */
@SuppressWarnings("rawtypes")
public class Meipo implements InvocationHandler {
	
	private Person target; // 被代理对象的引用作为一个成员变量保存下来了

	// 获取被代理人的个人资料
	public Object getInstance(Person target) throws Exception {
		this.target = target;
		Class clz = target.getClass();
		System.out.println("被代理对象的class是：" + clz);
		return Proxy.newProxyInstance(clz.getClassLoader(), clz.getInterfaces(), this);
	}
	
	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		
		System.out.println("我是媒婆，得给你找个异性！");
		System.out.println("开始进行海选......");
		
		System.out.println("-------------------------------");
		
		method.invoke(target, args);
		
		System.out.println("-------------------------------");
		
		System.out.println("如果合适的话，就准备办事儿！");
		return null;
	}

}
